<?php
// +----------------------------------------------------------------------
// | HkCms 模块初始化
// +----------------------------------------------------------------------
// | Copyright (c) 2012-2019 http://www.hkcms.cn, All rights reserved.
// +----------------------------------------------------------------------
// | Author: 广州恒企教育科技有限公司 <admin@hkcms.cn>
// +----------------------------------------------------------------------

namespace common\behavior;

class ModuleInitBehavior
{
    public function run(&$param)
    {
        define('MODULE_PATH', APP_PATH.request()->module().'/');

        // 模块(应用)静态资源目录地址extresdir
        define('MODULE_EXTRESDIR', 'statics/extres/' . strtolower(request()->module()) . '/');

        // 加载模块配置
        if (file_exists(MODULE_PATH.'conf/config.php')) {
            $config = include MODULE_PATH.'conf/config.php';
            config(request()->module(), $config);
        }

        //禁止访问
        $this->prohibitAccess();
    }

    /**
     * 禁止非法访问
     */
    private function prohibitAccess() {
        $module_allow_list = config('MODULE_ALLOW_LIST');
        if (!empty($module_allow_list) && !in_array(request()->module(), config('MODULE_ALLOW_LIST'))) {
            if (config('app_debug')) {
                exception('该模块没有安装，无法进行访问！');
            } else {
                send_http_status(400);
                exit;
            }
        }
        $config = hk_cache('Config');
        if (request()->module() == 'admin' && isModuleInstall('Domains') && $config['domainaccess']) {
            $Module_Domains_list = cache('Module_Domains_list');
            $http_host = strtolower($_SERVER['HTTP_HOST']);
            $domain = explode('|', $Module_Domains_list['Admin']);
            if ($Module_Domains_list['Admin'] && !in_array($http_host, $domain)) {
                send_http_status(404);
                exit;
            }
        }
    }
}